
var fs = require("fs");
var path = require("path");


/*
 .mkdir(url , callback)  创建目录    url为需要创建的目录所在路径   callback 创建动作执行完成之后的回调函数
 fs.mkdir("./", (err, data) => {
    if (err) throw err;
    console.log(data);
})

.rmdir(url , callback)  删除目录  (目录必须为空才能被删除)
    url为需要被删除的目录路径
    callback 为操作执行完后的回调函数

.readdir(url,callback)  读取目录
    url 为需要被读取的目录路径
    callback 为读取完毕后执行的回调函数
            第一个形参 error为读取失败时的记录信息
            第二个形参 list 为读取成功时文件名/目录名集合列表

.stat(url , callback) 获取文件/目录的相关信息
    url  为需要获取信息的文件/目录 的路径
    callback  为读取完毕后的回调函数
        第一个形参error为读取失败时的错误信息
        第二个形参info  为读取成功时的相关信息对象
            该info对象下有两个方法
                isFile() 方法用来判断是否为文件
                isDirectory() 方法用来判断是否为目录
                isBlockDevice()	如果是块设备返回 true，否则返回 false。
                isCharacterDevice()	如果是字符设备返回 true，否则返回 false。
                isSymbolicLink()	如果是软链接返回 true，否则返回 false。
                isFIFO()	如果是FIFO，返回true，否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
                isSocket()	如果是 Socket 返回 true，否则返回 false。
*/
// fs.mkdir(path.join(__dirname, "../data/111"), function (err) {
//     if (!err) {
//         console.log("文件夹新增成功");
//     } else {
//         console.log("文件夹新增失败", err);
//     }
// })



/* fs.rmdir(path.join(__dirname, "../data/111"), function (err) {
    if (!err) {
        console.log("文件夹删除成功");
    } else {
        console.log("文件夹删除失败", err);
    }
}) */


/* fs.readdir(path.join(__dirname, "../data"), function (err, list) {
    if (!err) {
        console.log("文件夹读取成功", list);

        list.forEach(item => {
            fs.stat(path.join(__dirname, "../data", item), function (err, info) {
                if (!err) {
                    console.log(item + "信息获取成功");
                    console.log("文件", info.isFile());
                    console.log("文件夹", info.isDirectory());
                } else {
                    console.log("信息获取失败", err);
                }
            })
        })

    } else {
        console.log("文件夹读取失败", err);
    }
}) */

// 封装一个方法,删除某个文件夹 (递归 / 异步 )


/* 
    .rename(oldUrl , newUrl , callback) 修改文件名/目录名      (注:当新的路径和旧的路径不相同时,则会移动文件;)
    oldUrl 为需要被修改的文件路径(包含文件名)
    newUrl 为被修改好后的文件(包含文件名)
    callback 当文件重命名操作执行完毕后的回调函数
*/

/* fs.rename(path.join(__dirname, "../data/111"), path.join(__dirname, "../data/222"), function (err) {
    if (!err) {
        console.log("重命名成功");
    } else {
        console.log("重命名失败", err);
    }
}) */

fs.rename(path.join(__dirname, "../data/222"), path.join(__dirname, "./222"), function (err) {
    if (!err) {
        console.log("重命名成功");
    } else {
        console.log("重命名失败", err);
    }
})

